#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 25 20:26:14 2022

@author: cythnia
"""

##爬虫第三课 编程语言tiobe指数数据提取
#————————————————————————————————————————#
#导入工具包
import requests
from bs4 import BeautifulSoup
import pandas as pd 
#爬取的网址
url="https://www.tiobe.com/tiobe-index/"
#设置请求头，模拟浏览器
headers={
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'
    }
#获取网页信息
html=requests.get(url,headers=headers)
#统一编码规则防止乱码
html.encoding=html.apparent_encoding
#获取网页的内容
data=html.text
#信息转换
soup=BeautifulSoup(data,'lxml')
#获取标题
name=soup.select('#top20 > thead > tr > th')
for i in name:
    print(i.get_text())
#获取值的信息
#目的是寻找前20行，所以只需要到tr节点即可
zhi=soup.select('#top20 > tbody > tr')
for i in zhi:
    print(i.get_text())
#寻找行下面的一个节点中每个值所在的标签td，将每个值进行分离再合并为列表
lis=[]
for i in zhi:
    j=i.find_all('td')
    lis.append([j[0].get_text(),j[1].get_text(),j[2].get_text(),j[4].get_text(),
                j[5].get_text(),j[6].get_text()])
   
#将所获的信息生成dataframne
result=pd.DataFrame(lis,columns=[i.get_text() for i in name])

result.to_excel('/Users/cythnia/Desktop/编码语言排名.xlsx',index=False)